﻿/*
 * CauThuDataAccess.cs
 * 
 * author Trần Thái Bình
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using System.Data.OleDb;
using InfoLayer;

namespace DataAccessLayer
{
    /// <summary>
    /// Dùng thao tác dữ liệu trên table CAUTHU
    /// </summary>
    public class CauThuDataAccess:DataAccessAbstract
    {
        /// <summary>
        /// Lấy danh sách record trong table CAUTHU
        /// </summary>
        /// <returns>ArrayList</returns>
        public List<CauThuInfo> LayDanhSach()
        {
            List<CauThuInfo> kq = new List<CauThuInfo>();
            CauThuInfo Info;
            //Viết câu lênh SQL
            _sqlString = "SELECT * FROM CAUTHU";
            //Kết nối CSDL
            _connection = ConnectionData();
            //Thực hiên câu try vấn
            _command = new OleDbCommand(_sqlString, _connection);
            _reader = _command.ExecuteReader();
            //Đọc các record
            while (_reader.Read())
            {
                Info = new CauThuInfo();
                try
                {
                    Info.MaCauThu = _reader["MaCauThu"].ToString();
                    Info.MaDoiBong = _reader["MaDoiBong"].ToString();
                    Info.TenCauThu = _reader["TenCauThu"].ToString();
                    Info.NgaySinh = Convert.ToDateTime(_reader["NgaySinh"].ToString());
                    Info.MaLoaiCauThu = _reader["MaLoaiCauThu"].ToString();
                    Info.GhiChu = _reader["GhiChu"].ToString();
                    Info.TongBanThang = Convert.ToInt32(_reader["TongBanThang"].ToString());
                }
                catch
                {
                    _reader.Close();
                    _command.Cancel();
                    _connection.Close();
                    throw new Exception("Lỗi kết nối dữ liệu");
                }

                kq.Add(Info);
            }
            //Đóng tất cả các kết nối
            _reader.Close();
            _command.Cancel();
            _connection.Close();

            return kq;
        }

        /// <summary>
        /// Đếm số cầu thủ cùng mã đội bóng
        /// </summary>
        /// <param name="MaDoiBong"></param>
        /// <returns>int </returns>
        public int SoCauThuDoiBong(string MaDoiBong)
        {
            int ss = 0;
            //Viết câu SQL
            _sqlString = string.Format("SELECT COUNT(*) FROM CAUTHU WHERE CAUTHU.MaDoiBong = '{0}'",MaDoiBong);
            //Kêt nối cơ sở dữ liệu
            _connection = ConnectionData();
            try
            {
                //Thực hiện câu lệnh SQL
                _command = new OleDbCommand(_sqlString, _connection);
                _command.ExecuteNonQuery();
                //Lấy dữ liệu
                _reader = _command.ExecuteReader();
                _reader.Read();
                ss = Convert.ToInt32(_reader[0].ToString());
            }
            catch
            {
                _reader.Close();
                _command.Cancel();
                _connection.Close();
                throw new Exception("Lỗi kết nối dữ liệu");
            }
            return ss;

        }

        /// <summary>
        /// Tự động cấp phát mã cầu thủ
        /// </summary>
        /// <param name="MaDoiBong"></param>
        /// <returns>string</returns>
        public string CapPhatMaCauThu(string MaDoiBong)
        {
            string maCT = "";
            int stt = SoCauThuDoiBong(MaDoiBong) + 1;
            maCT = MaDoiBong.Substring(3) + "MCT" + stt.ToString();
            return maCT;
        }

        /// <summary>
        /// Chèn dữ liệu vào table CAUTHU
        /// </summary>
        /// <param name="ctInfo"></param>
        public void Insert(ref CauThuInfo ctInfo)
        {
            //Viết câu SQL
            _sqlString = "INSERT INTO CAUTHU VALUES('" +
                ctInfo.MaCauThu + "','" +
                ctInfo.MaDoiBong + "','" +
                ctInfo.TenCauThu + "','" +
                ctInfo.NgaySinh + "','" +
                ctInfo.MaLoaiCauThu + "','" +
                ctInfo.GhiChu + "'," +
                ctInfo.TongBanThang + ")";
            //Kết nối CSDL
            _connection = ConnectionData();
            
            try
            {
                //Thực thi câu lệnh SQL
                _command = new OleDbCommand(_sqlString, _connection);
                _command.ExecuteNonQuery();
            }
            catch
            {
                _reader.Close();
                _command.Cancel();
                _connection.Close();
                throw new Exception("Lỗi kết nối dữ liệu");
            }
            //Đóng kết nối
            _reader.Close();
            _command.Cancel();
            _connection.Close();
        }


    }
}
